import os

print(dir(os))
# https://blog.csdn.net/yw1013/article/details/134093810?ops_request_misc=%257B%2522request%255Fid%2522%253A%25228eae37ccc38865bb0de61506b2f87bcb%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=8eae37ccc38865bb0de61506b2f87bcb&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-134093810-null-null.142^v102^pc_search_result_base1&utm_term=python%20%20os%E5%BA%93&spm=1018.2226.3001.4187
"""
'abc', 'abort', 'access', 'add_dll_directory', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir',
 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 
 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 
 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 
 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 
 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 
 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable',
  'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 
  'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 
  'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 
  'unsetenv', 'urandom', 'utime', 'waitpid', 'waitstatus_to_exitcode', 'walk', 'write'


这个示例展示了os模块的多种常用功能：
    目录操作：创建、切换、删除目录
    文件操作：创建、重命名、删除文件
    系统交互：执行系统命令、获取环境变量
    信息获取：获取文件状态、目录内容、当前路径
"""


def os_demo():
    # 1. 获取当前工作目录
    current_dir = os.getcwd()
    print(f"当前工作目录: {current_dir}")

    # 2. 创建新目录
    new_dir = "demo_directory"
    if not os.path.exists(new_dir):
        os.mkdir(new_dir)
        print(f"已创建目录: {new_dir}")
    else:
        print(f"目录 {new_dir} 已存在")

    # 3. 创建嵌套目录
    nested_dir = "parent_dir/child_dir/grandchild_dir"
    if not os.path.exists(nested_dir):
        os.makedirs(nested_dir)
        print(f"已创建嵌套目录: {nested_dir}")
    else:
        print(f"嵌套目录 {nested_dir} 已存在")

    # 4. 改变当前工作目录
    os.chdir(new_dir)
    print(f"切换后工作目录: {os.getcwd()}")

    # 5. 创建一个测试文件
    test_file = "test.txt"
    with open(test_file, "w") as f:
        f.write("这是一个测试文件")
    print(f"已创建文件: {test_file}")

    # 6. 列出当前目录内容
    print(f"\n{os.getcwd()} 目录内容:")
    for item in os.listdir():
        print(f"- {item}")

    # 7. 获取文件状态信息
    file_stat = os.stat(test_file)
    print(f"\n{test_file} 的大小: {file_stat.st_size} 字节")
    print(f"{test_file} 的修改时间: {file_stat.st_mtime}")

    # 8. 重命名文件
    new_file_name = "renamed_test.txt"
    os.rename(test_file, new_file_name)
    print(f"\n文件已重命名为: {new_file_name}")

    # 9. 执行系统命令（示例：列出目录详细信息）
    print("\n执行系统命令结果:")
    if os.name == "nt":  # Windows系统
        os.system("dir")
    else:  # Linux/Mac系统
        os.system("ls -l")

    # 10. 删除文件
    os.remove(new_file_name)
    print(f"\n已删除文件: {new_file_name}")

    # 11. 返回上一级目录并清理
    os.chdir("..")
    os.rmdir(new_dir)
    print(f"\n已删除目录: {new_dir}")

    # 12. 查看环境变量
    print(f"\n当前Python路径: {os.environ.get('PYTHONPATH')}")
    print(f"当前用户: {os.environ.get('USERNAME') or os.environ.get('USER')}")


if __name__ == "__main__":
    os_demo()
